package com.atguigu.java.test1;

import java.net.InetAddress;

/**
 * 一。网络编程中的两个主要问题
 * <p>
 * 1、如果准确地定位网络上一台或多台主机； 定位主机上的特定应用
 * 2、找到主机后 如何高效的进行数据传输
 * <p>
 * 二、网络编程中的两个要素
 * 1.对应问题一：IP和端口号
 * 2.对应问题二:提供网络通信协议：TCP、IP参考模型（应用层、传输层、网络层、物理+数据链路层）
 * <p>
 * 三、通信要素一：IP和端口号
 * 1、IP：唯一的标识 Internet 上的计算机 （通信实体）
 * 2、在java中使用InetAddress类 代表Ip
 * 3.IP分类方式一： IPV4  和 IPV6  ；方式二： 万维网 和 局域网
 * 4.域名： www.baidu.com   www.sina.com   www.mi.com    www.vip.com   ....
 * 5.本地回路地址 127.0.0.1   对应着 localhost（本机）
 * 6.如何实例化InetAddress:两个方法： getBuName(String host)/getLocalHost()
 * 7.端口号：正在计算机上运行的进程
 * 要求： 不同的进程要有不同的端口号
 * 范围：被规定为一个16位的整数 0-65535
 * <p>
 * 8.端口号和ip地址的组合得出一个网络套接字 ：Socket
 *
 * @author shkstart
 * @create 2021-02-01 17:19
 */
public class InternetAddressTest {
    public static void main(String[] args) {


        try {
            InetAddress i1 = InetAddress.getByName("192.168.3.2");
            System.out.println(i1);

            InetAddress i2 = InetAddress.getByName("www.baidu.com");
            System.out.println(i2);


            //获取本地的IP
            //方式一
            InetAddress i3 = InetAddress.getByName("127.0.0.1");
            System.out.println(i3);
            //方式二
            InetAddress host = InetAddress.getLocalHost();
            System.out.println(host);

            //两个方法  以i2为例
            //getHostName(): 获取主机域名
            System.out.println(i2.getHostName());

            //getHostAddress()：获取主机ip地址
            System.out.println(i2.getHostAddress());

        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
